package bio.filedemo1;

import java.io.DataInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.net.Socket;
import java.util.UUID;

/**
 * @author charwayH
 */
public class ServerReaderThread extends Thread {

    private Socket socket;

    public ServerReaderThread(Socket socket){
        this.socket = socket;
    }

    @Override
    public void run() {
        try {
            // 1. 得到一个数据输入流获取客户端发送过来的数据
            DataInputStream dis = new DataInputStream(socket.getInputStream());
            // 2. 读取客户端发送过来的文件类型
            String suffix = dis.readUTF();
            System.out.println("服务端已经成功接收到了文件类型:" + suffix);
            // 3. 定义个字节输出管道负责把客户端发送的文件数据写出来
            OutputStream os = new FileOutputStream("/Users/charwayh/Desktop/java-myself/hello-net-io/src/main/java/bio/filedemo1/target/"
                    + UUID.randomUUID().toString()+suffix);
            // 4. 从数据输入流中读取文件数据，写出到字节输出流汇总
            byte[] buffer = new byte[1024];
            int len;
            while ((len = dis.read(buffer)) > 0){
                os.write(buffer,0,len);
            }
            os.close();
            System.out.println("服务端接收文件保存成功");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}
